home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / stdio / _putbuf.c < prev    next >
C/C++ Source or Header  |  1998-08-02  |  583b  |  25 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int _putbuf(int c,FILE *f)
  5. {
  6.   _chkabort();
  7.   if(!f) return(EOF);
  8.   if((f->flags&(_WRITEABLE|_READ|_EOF|_ERR))!=_WRITEABLE) return(EOF);
  9.   if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
  10.   if(!f->base){
  11.     if(!(f->base=(char *)malloc(f->bufsize+1)+1))
  12.       return(EOF);
  13.   }else{
  14.     int len=f->pointer-f->base;
  15.     if(f->flags&_WRITE)
  16.       if(_write(f->filehandle,f->base,len)!=len) return(EOF);
  17.   }
  18.   f->flags|=_WRITE;
  19.   f->pointer=f->base;
  20.   f->count=f->bufsize;
  21.   *f->pointer++=c;
  22.   f->count--;
  23.   return(0);
  24. }
  25.